
package com.hyst.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.fasterxml.jackson.databind.ObjectMapper;

import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * @Description:
 * @Date：2017年9月4日 @author： DongY
 * @version ：1.0 1.[2017年9月4日]CreatBy：dy
 */
@Configuration
public class JedisConfig {

	private String redisHost = "localhost";
	private int port = 6379;
	private String passWord;
	private int timeOut = 5000;
	// private JedisPool pool;

	public JedisPoolConfig jedisPoolConfig() {
		final JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
		// 最大空闲数
		jedisPoolConfig.setMaxIdle(15);
		jedisPoolConfig.setMinIdle(5);
		// 获取连接最大等待时间，超过则抛出连接超时异常
		jedisPoolConfig.setMaxWaitMillis(6000);
		jedisPoolConfig.setTestOnCreate(true);
		jedisPoolConfig.setTestOnBorrow(true);
		jedisPoolConfig.setTestOnReturn(true);
		// 最大连接数
		jedisPoolConfig.setMaxTotal(200);

		jedisPoolConfig.setTimeBetweenEvictionRunsMillis(5000);
		// 连接耗尽的时候是否阻塞，false直接抛异常，true等待，直到超时，默认为true；
		jedisPoolConfig.setBlockWhenExhausted(true);
		return jedisPoolConfig;
	}

	@Bean
	public ObjectMapper objectMapper() {
		return new ObjectMapper();
	}

	@Bean
	public JedisPool jedisPool() {
		return new JedisPool(jedisPoolConfig(), redisHost, port, timeOut, passWord);
	}

}
